<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <!-- 
    ref属性：
    1、被用来给元素或子组件注册引用信息（id替代者 document.getElementById(id)）
    2、应用在html标签上获取的是真实的Dom元素，应用在组件标签上是组件实例对象VueComponent
    3、设置：<h1 v-text="msg" ref="title"></h1>
       获取：this.$refs.xxx 
  -->
    <!-- 准备好一个容器-->
    <div id="app">
      <h1 v-text="msg" ref="title"></h1>
      <Student ref="stu"></Student>
      <button ref="btn" @click="showDom">点我输出Dom元素</button>
    </div>
    <script src="vue.js"></script>
    <script>
        Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。

        const Student = Vue.extend({
            template: `
            <div>
                <h2>学生姓名：{{name}}</h2>
                <h2>学生年龄：{{age}}</h2>
                <button @click="showStudentInfo()">显示学生信息</button>
            </div>
            `,
            data() {
                return {
                  name: 'zhangsan',
                  age: 23
                }
            },
            methods: {
                showStudentInfo() {
                    alert(this.name + ' : ' + this.age);
                }
            }
        })

        //创建vue实例
        new Vue({
            el: '#app',
            data: {
              msg: 'Hello Vue'
            },
            components: {
              Student
            },
            methods: {
              showDom() {
                console.log(this.$refs.title)//真实Dom元素
                console.log(this.$refs.btn)//真实Dom元素
                console.log(this.$refs.stu)//Student组件的实例对象（VueComponent）
                console.log(this)//Vue实例
              }
            },
        })
    </script>
</body>

</html>